home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 2
/
DOS032.dsk
/
GENERATIONS.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
3KB
|
64 lines
100 REM ILLUSTRATE TECHNIQUES FOR CONTROLLING GENERATIONS OF DATA.
110 TEXT : HOME : PRINT "THIS PROGRAM SHOWS HOW TO LOOK AFTER 5 GENERATIONS OF A DATA FILE.": PRINT
120 PRINT "PREPARE EMPTY FILES FOR 1ST RUN VIA ]RUN 830": PRINT
130 PRINT "WATCH THE TECHNIQUE IN OPERATION BY ]RUN 200 <== DO THIS SEVERAL TIMES.": PRINT
140 PRINT "... THEN ADAPT THE PROGRAM FOR YOUR OWN USE. FOR PURPOSES OF ILLUSTRATION, THE PROGRAM MAINTAINS SOME ACCOUNTS PAYABLE."
150 END
200 F$ = "PAYABLES": REM THESE FILES CONCERN ACCOUNTS PAYABLE.
210 FG = 5: REM WE WANT TO KEEP THIS MANY GENERATIONS FOR BACKUP.
220 DIM FD$(FG): REM STORE THE DATE OF EACH GENERATION OF THE FILE.
300 D$ = CHR$(4): REM CTRL-D TO IDENTIFY COMMANDS TO DOS.
310 TEXT : HOME : PRINT "I MAINTAIN THE "F$" FILES."
320 PRINT : PRINT "ACCESSING THE CONTROL FILE ..."
330 PRINT : PRINT "GENERATION DATE": PRINT
340 PRINT D$"OPEN "F$".CONTROL"
350 PRINT D$"READ "F$".CONTROL"
360 FOR I = 1 TO FG: INPUT FD$(I)
370 PRINT TAB( 5)I; TAB( 15)FD$(I);
380 IF I = 1 THEN PRINT " <-INPUT";
390 IF I = FG THEN PRINT " <-DELETE";
400 PRINT : NEXT : PRINT : PRINT D$"CLOSE"
410 INPUT "TODAY'S DATE: ";FD$(0)
420 FOR I = 1 TO FG: REM CHECK FOR ERROR- DUPLICATE DATE KEYED.
430 IF FD$(0) < >FD$(I) THEN NEXT : GOTO 460
440 FLASH : PRINT "ERROR: SAME DATE AS GENERATION "I: NORMAL
450 PRINT :I = FG: NEXT : GOTO 410
460 FO$ = F$ +"." +FD$(0): REM MAKE NAME OF OUTPUT FILE
470 I = LEN(FO$) -30: IF I <1 GOTO 500
480 FLASH : PRINT "ERROR: DATE IS TOO LONG BY "I" BYTES.": NORMAL
490 PRINT : GOTO 410
500 FI$ = F$ +"." +FD$(1): REM MAKE NAME OF INPUT FILE
510 PRINT : PRINT "OK. OPENING THE FILES ..."
520 PRINT D$"OPEN "FI$
530 PRINT D$"OPEN "FO$: PRINT D$"DELETE "FO$: PRINT D$"OPEN "FO$
540 PRINT D$"READ "FI$: INPUT PN$,PA: PRINT D$: REM GET INPUT DATA.
550 IF PA = 0 GOTO 620: REM CHECK FOR END-OF-DATA
560 A$ = STR$(PA +.005):A$ = LEFT$(A$, LEN(A$) -1)
570 PRINT : PRINT TAB( 10 - LEN(A$))A$" TO "PN$
580 PRINT TAB( 14);: INPUT "DID YOU PAY? ";Y$:Y$ = LEFT$(Y$ +" ",1)
590 IF Y$ = "N" THEN GOSUB 800: GOTO 540
600 IF Y$ = "Y" GOTO 540
610 GOTO 580
620 PRINT : PRINT "ENTER CREDITOR'S NAME": INPUT ": ";PN$
630 IF PN$ = "" GOTO 700: REM NULL MEANS END-OF-JOB
640 INPUT "ENTER AMOUNT PAYABLE ";PA
650 IF PA >0 THEN GOSUB 800
660 GOTO 620
700 PRINT D$"WRITE"FO$: PRINT : PRINT 0: PRINT D$"CLOSE": REM ZERO @ END
710 PRINT D$"DELETE "F$"."FD$(FG): REM DELETE OLDEST
720 PRINT D$"OPEN "F$".CONTROL": REM PREPARE TO REWRITE CONTROL FILE
730 PRINT D$"WRITE"F$".CONTROL"
740 FOR I = 1 TO FG: PRINT FD$(I -1): NEXT : REM WRITE NEWEST FIRST
750 PRINT D$"CLOSE"
760 A$ = STR$(TA +.005):A$ = LEFT$(A$, LEN(A$) -1)
770 PRINT : PRINT "ALL DONE.": PRINT : REM AND NOW THE BAD NEWS
780 PRINT "YOU OWE $"A$" TO "TN" CREDITORS.": PRINT : END
800 PRINT D$"WRITE "FO$: PRINT PN$: PRINT PA: PRINT D$
810 TN = TN +1:TA = TA +PA: RETURN : REM ACCUM TOTAL WRITTEN
830 REM ENTER HERE TO INITIALIZE THE SYSTEM BEFORE THE FIRST RUN.
840 D$ = CHR$(4):F$ = "PAYABLES":FG = 5
850 PRINT D$"OPEN "F$".CONTROL": PRINT D$"WRITE "F$".CONTROL"
860 FOR I = 1 TO FG: PRINT "PHONY"I: NEXT : PRINT D$"CLOSE"
870 FOR I = 1 TO FG: PRINT D$"OPEN "F$".PHONY"I: REM EMPTY FILE
880 PRINT D$"WRITE "F$".PHONY"I: PRINT : PRINT 0: PRINT D$"CLOSE": NEXT
890 PRINT : PRINT FG" PHONY FILES CREATED.": END